package model;

import java.util.Date;
import java.util.Vector;

public class OrdenCompra {

	private Date fecha; 
	private int numero;
	private String estado;
	private Vector<ItemOrdenCompra> items;
	private Proveedor proveedor;
	
	
	public OrdenCompra(Proveedor prov){
		this.estado = "Pendiente de envio";
		this.fecha = new Date();	
		this.items = new Vector<ItemOrdenCompra>();
		this.proveedor = prov;
	}

	public OrdenCompra(int numero, Date fecha, String estado, Vector<ItemOrdenCompra> items, Proveedor prov){
		this.estado = estado;
		this.fecha = fecha;	
		this.items = items;
		this.proveedor = prov;
		this.setNumero(numero);
	}

	public java.sql.Date getFecha() {
		return (java.sql.Date) this.fecha;
	}


	public void setFecha(Date fecha) {
		this.fecha = fecha;
	}


	public String getEstado() {
		return estado;
	}


	public Proveedor getProveedor() {
		return proveedor;
	}


	public void setProveedor(Proveedor proveedor) {
		this.proveedor = proveedor;
	}


	public void setEstado(String estado) {
		this.estado = estado;
	}


	public Vector<ItemOrdenCompra> getItems() {
		return items;
	}


	public void setItems(Vector<ItemOrdenCompra> items) {
		this.items = items;
	}
	
	
	public ItemOrdenCompra agregarItem(Material mat, int cant){
		ItemOrdenCompra item = null;
		if(items!=null){
			for(int i = 0; i<items.size(); i++){
				if(items.elementAt(i).getMaterial().getNombre().equalsIgnoreCase(mat.getNombre())){
					items.elementAt(i).setCantidad(items.elementAt(i).getCantidad()+cant);
					item = items.elementAt(i);
					}
				}
			}
		if(item==null){
			
			item = new ItemOrdenCompra(mat, cant);
			items.add(item);
		}
		return item;
		}
			
	public float calcularCosto(){
		float costo = 0;
		for(int i =0; i < items.size(); i++){
			costo = costo + items.elementAt(i).getMaterial().getCosto()*items.elementAt(i).getCantidad();
		}
		return costo;
	}

	public void enviarOC(){
		this.setEstado("Esperando entrega");
		persistence.APOrdenDeCompra.enviarOrden(this, this.calcularCosto());
	}


	public void cerrarOC(){
		this.setEstado("Cerrada");
		persistence.APOrdenDeCompra.cerrarOrden(this);
	}
	
	public int getNumero() {
		return numero;
	}

	public void setNumero(int numero) {
		this.numero = numero;
	}
	
}
